home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / redakcyjne / programy / Tlen 6.0.1.12 pl / tleninst60112.exe / sdk / Plugin_src / options-vc / demoplugin.cpp < prev    next >
C/C++ Source or Header  |  2006-09-18  |  4KB  |  177 lines

  1. // demoplugin.cpp : Defines the entry point for the DLL application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "../../TlenSources/plugin/plugin_struct.h"
  6. #include "../../TlenSources/plugin/plugin_options.h"
  7. #include "AggressiveOptimize.h"
  8.  
  9. HINSTANCE hInst;
  10. TLENPLUGINFUNCTIONS *tlen_functions;
  11. HWND option_window = NULL;
  12. HBITMAP icon1, icon2;
  13. COLORREF bgColor;
  14. HBRUSH hBrush;
  15.  
  16. TLENPLUGININFO pluginInfo={
  17.     sizeof(TLENPLUGININFO),
  18.     "Obs│uga opcji - VC++",
  19.     PLUGIN_API_VERSION,
  20.     MAKE_DWORD_VERSION(1,2,3,4),
  21.     "Opis pluginu",
  22.     "⌐ Prawa autorskie",
  23.     "Producent",
  24.     "E@mail",
  25.     "http://www",
  26.     0,        
  27.     0,        
  28.     0,        
  29.     0        
  30. };
  31.  
  32. extern "C" __declspec(dllexport) TLENPLUGININFO* GetPluginInfo(DWORD TlenVersion);
  33. extern "C" __declspec(dllexport) int LoadPlugin(TLENPLUGINFUNCTIONS *tlen_functions);
  34. extern "C" __declspec(dllexport) int UnloadPlugin(void);
  35.  
  36.                 
  37.  
  38. int prefDialog(HWND hWnd, UINT message, WPARAM wparam, LPARAM lparam)
  39. {
  40.     switch (message) {
  41.  
  42.         case WM_INITDIALOG:
  43.         {
  44.                 hBrush=::CreateSolidBrush(bgColor);
  45.                 break;
  46.         }
  47.  
  48.         case WM_ERASEBKGND:
  49.         {
  50.     
  51.                 RECT rc;
  52.                 ::GetClientRect(hWnd, &rc);
  53.                 HDC hdc= (HDC) wparam;
  54.                 
  55.                  FillRect(hdc,&rc,hBrush);
  56.                 
  57.                 return true;
  58.         }
  59.         
  60.         case WM_CTLCOLORSTATIC:
  61.         {
  62.                 RECT rc;
  63.                 HWND hnd = (HWND) lparam;
  64.                 ::GetClientRect(hnd, &rc);
  65.                 HDC hdc= (HDC) wparam;
  66.                 SetTextColor(hdc, RGB(0,0,0));
  67.                 SetBkColor(hdc, bgColor);
  68.                 
  69.                 return (int) hBrush;
  70.         }
  71.  
  72.         case WM_DESTROY:
  73.         {
  74.                 DeleteObject(hBrush);
  75.                 break;
  76.         }
  77.  
  78.     }
  79.  
  80.     return 0;
  81. }
  82.  
  83. static int OptionPageClicked(WPARAM wParam, LPARAM lParam)
  84. {
  85.  TlenOptionPageShowInfo *info = (TlenOptionPageShowInfo *) wParam;
  86.  strcpy(info->Caption, "Przyk│adowa nazwa zak│adki");
  87.  strcpy(info->Description, "To jest opis zak│adki, tutaj mo┐na wstawiµ d│u┐szy tekst, aby wyja£niµ u┐ytkownikowi, co siΩ tu dzieje.");
  88.  
  89.  switch (info->Action)
  90.  {
  91.   case TLEN_OPTIONS_PAGE_ACTION_SHOW:
  92.   {
  93.      if (!option_window)
  94.      {
  95.           bgColor = info->bgColor;          
  96.           option_window = CreateDialog(hInst, MAKEINTRESOURCE(101), info->Handle, (DLGPROC)prefDialog);
  97.           tlen_functions->CallTlenFunction(hInst, TLEN_ADD_DIALOG_HANDLE, (WPARAM) option_window, NULL);
  98.      }
  99.      info->Icon = icon1;
  100.      info->Flags |= TLEN_OPTIONS_PAGEINFO_FLAG_ICONTRANS;
  101.      SetWindowPos(option_window, 0, info->x, info->y, info->width, info->height, SWP_NOSIZE | SWP_NOZORDER);
  102.      ShowWindow(option_window, SW_SHOW);
  103.      break;     
  104.   }
  105.  
  106.   case TLEN_OPTIONS_PAGE_ACTION_HIDE:
  107.   {
  108.      if (option_window) ShowWindow(option_window, SW_HIDE);
  109.      break;
  110.   }
  111.  
  112.   case TLEN_OPTIONS_PAGE_ACTION_OK:
  113.   case TLEN_OPTIONS_PAGE_ACTION_APPLY:
  114.   {
  115.    //KlikniΩto ok lub zastosuj, wiΩc przetwarzamy tutaj opcje wybrane przez u┐ytkownika
  116.  
  117.    if (info->Action == TLEN_OPTIONS_PAGE_ACTION_APPLY) break;
  118.   }
  119.  
  120.   case TLEN_OPTIONS_PAGE_ACTION_CANCEL:
  121.   {
  122.    if (option_window)
  123.    {
  124.     tlen_functions->CallTlenFunction(hInst, TLEN_REMOVE_DIALOG_HANDLE, (WPARAM) option_window, NULL); 
  125.     DestroyWindow(option_window);
  126.     option_window = NULL;
  127.     break;
  128.    }
  129.   }
  130.  }
  131.  
  132.  return 0;
  133. }
  134.  
  135. BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
  136. {
  137.     hInst=hinstDLL;
  138.     return TRUE;
  139. }
  140.  
  141. __declspec(dllexport) TLENPLUGININFO* GetPluginInfo(DWORD tlenVersion)
  142. {
  143.     return &pluginInfo;
  144. }
  145.  
  146. __declspec(dllexport) int LoadPlugin(TLENPLUGINFUNCTIONS *functions)
  147. {
  148.     icon1 = (HBITMAP) LoadImage(hInst, MAKEINTRESOURCE(104),IMAGE_BITMAP, 32, 32, NULL);
  149.     icon2 = (HBITMAP) LoadImage(hInst, MAKEINTRESOURCE(105),IMAGE_BITMAP, 16, 16, NULL);
  150.  
  151.     tlen_functions = functions;
  152.     
  153.     TlenOptionPageDefinition def;
  154.     InitializeStruct(def);
  155.     def.CallBack = OptionPageClicked;
  156.     def.ID = "BasicPluginVC/Page1";
  157.     def.Caption = "Dodatkowa zak│adka 1";
  158.     def.Icon = icon2;
  159.     def.Flags = TLEN_OPTIONS_PAGEDEF_FLAG_TLENCOLOR | TLEN_OPTIONS_PAGEDEF_FLAG_ICONTRANS;
  160.  
  161.     tlen_functions->CallTlenFunction(hInst, TLEN_ADD_OPTIONS_PAGE, (WPARAM) hInst, (LPARAM) &def);
  162.     return 0;
  163. }
  164.  
  165. __declspec(dllexport) int UnloadPlugin(void)
  166. {
  167.     if (option_window)
  168.     {
  169.      tlen_functions->CallTlenFunction(hInst, TLEN_REMOVE_DIALOG_HANDLE, (WPARAM) option_window, NULL); 
  170.      DestroyWindow(option_window);
  171.     }
  172.  
  173.     DeleteObject(icon1);
  174.     DeleteObject(icon2);
  175.     return 0;
  176. }
  177.